package com.shujia.scala

object Demo11Fun {
  def main(args: Array[String]): Unit = {
    //定义函数
    def fun(str: String): Unit = {
      println(s"fun:$str")
    }

    //调用函数
    fun("数加")

    //有返回值
    def add(x: Int, y: Int): Int = {
      return x + y
    }
    //调用函数
    println(add(1, 2))

    //函数的省略
    //1、{}可以省略，当函数体只有一行时可以省略
    def fun1(str: String): Unit = println(s"fun:$str")

    //2、return可以省略
    //有返回值，默认最后一行作为返回值
    def add1(x: Int, y: Int): Int = x + y

    //3、返回值类型可以省略，会自动推断
    def add2(x: Int, y: Int) = x + y

    println(add2(2, 3))

    //4、如果美参数()可以省略
    def fun5 = println("数加")

    fun5

    //可变参数
    def add4(i: Int*): Unit = {
      for (elem <- i) {
        println(elem)
      }
    }

    add4(1, 2, 3, 4, 5)

    //参数的默认值
    def split(str: String, seq: String = ",", s: String): List[String] = str.split(seq).toList

    val str = "java,hadoop,hive"
    println(split(str, seq = ",", s = ""))
    println(split(str, s = ""))
  }
}
